﻿using System;
using System.Collections.Generic;
using System.Text;

namespace OSDK.Data
{
    public class DB
    {
        public enum MailGroup
        {
            Alla = 0,
            Funktionärer = 1
        }

        public static System.Collections.Generic.List<System.Net.Mail.MailAddress> GetEmails(MailGroup group)
        {
            
            OSDK.EmailDataTable emails = null;
            switch (group)
            {
                case MailGroup.Alla:
                    emails = new EmailTableAdapter().GetData();
                    break;
                case MailGroup.Funktionärer:
                    emails = new EmailTableAdapter().GetDataByFunktionärer();
                    break;
            }

            System.Collections.Generic.List<System.Net.Mail.MailAddress> list = new List<System.Net.Mail.MailAddress>();
            foreach (OSDK.EmailRow email in emails)
            {
                foreach (string address in email.Email.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries))
                {
                    try
                    {
                        list.Add(new System.Net.Mail.MailAddress(address));
                    }
                    finally
                    {
                        //Ignor any invalid email entry in database.
                    }
                }

            }
            return list;
        }

        public static string CheckEmail(string email)
        {

            OSDK.MedlemTypeDataTable medlemmar = new MedlemTypeTableAdapter().GetDataByEpostAdress(email);


            System.Text.StringBuilder output = new StringBuilder();
            foreach (OSDK.MedlemTypeRow medlem in medlemmar)
            {
                output.AppendLine(medlem.Efternamn + ", " + medlem.Förnamn + "(" + medlem.Email + ")");
            }

            return output.ToString();

        }

        public static OSDK.MedlemTypeDataTable GetMemeberByPayDate(DateTime payDate)
        {
            return new MedlemTypeTableAdapter().GetDataBetaltTillOchMed(payDate);
        }

        public static System.Data.DataTable GetMatrikelData()
        {

            System.Data.DataTable medlemmar;
            medlemmar = new MatrikelMedlemTableAdapter().GetData();

            //Lägg till kolumn för utbildningar
            medlemmar.Columns.Add("Utbildning", typeof(string));

            foreach (System.Data.DataRow medlem in medlemmar.Rows)
            {
                System.Data.DataTable utbildnigar = new MatrikelUtbildningsnivaTableAdapter().GetData((int)medlem["MedlemsNr"]);

                StringBuilder utbildningData = new StringBuilder();
                foreach (System.Data.DataRow utbildning in utbildnigar.Rows)
                {
                    utbildningData.AppendLine(utbildning["Short"].ToString() + ", ");
                }

                //Remove last
                if (utbildningData.Length > 0)
                {
                    utbildningData = utbildningData.Remove(utbildningData.Length - 1, 1);
                }

                medlem["Utbildning"] = utbildningData.ToString();
            }

            return medlemmar;

        }
    }
}
